package com.chen.demo04;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

//等会用这个类，进行自动生成代理类
public class ProxyInvocationHandler implements InvocationHandler {

//    被代理的接口
    private Object targer;

    public void setTarger(Object targer) {
        this.targer = targer;
    }

    //    生成得到代理类
    public Object getProxy(){
     return Proxy.newProxyInstance(this.getClass().getClassLoader(),targer.getClass().getInterfaces(),this);
    }

//  处理代理实例，并返回结果
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//        动态代理的本质就是使用反射机制实现的
        log(method.getName());
     Object  result=method.invoke(targer,args);
        return result;
    }

    public void log(String msg){
        System.out.println("执行"+msg+"方法");
    }
}
